package com.xmhmyh.generalframework.project.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xmhmyh.generalframework.common.BaseIService;
import com.xmhmyh.generalframework.common.entity.DataGridRequest;
import com.xmhmyh.generalframework.project.sys.dto.RoleDTO;
import com.xmhmyh.generalframework.project.sys.entity.*;

import java.util.Collection;
import java.util.List;

/**
 * @Author: 于丁
 * @DateTime: 2020/7/24 9:09 上午
 */
public interface IRoleService extends BaseIService<Role> {
    /**
     * @Author: 于丁
     * @Description: 找到用户的角色
     * @DateTime: 2020/7/21 8:04 下午
     * @Params:
     * @Return
     */
    List<UserRole> getUserRolesByUserId(Long userId);

    /**
     * @Author: 于丁
     * @Description: 找到角色的菜单
     * @DateTime: 2020/7/21 8:04 下午
     * @Params:
     * @Return
     */
    List<RoleMenu> getRoleMenusByRoleIds(List<Long> roleIds);

    /**
     * @Author: 于丁
     * @Description: 根据角色名查找角色
     * @DateTime: 2020/7/29 1:50 下午
     * @Params:
     * @Return
     */
    Role findByRoleCode(String roleName);




    /**
     * @Author: 于丁
     * @Description: 获取角色现在在菜单树的数据（因为前端树控件的特性，所以这边只需要获取末端的值即可）
     * @DateTime: 2020/7/30 10:32 上午
     * @Params:
     * @Return
     */
    List<Long> loadByRoleIdHandler(Long roleId);

    /**
     * @Author: 于丁
     * @Description: 保存角色
     * @DateTime: 2020/7/30 11:41 上午
     * @Params:
     * @Return
     */
    void saveHandler(User user, RoleDTO roleDTO);

    /**
     * @Author: 于丁
     * @Description: 删除角色
     * @DateTime: 2020/7/30 3:39 下午
     * @Params:
     * @Return
     */
    void delHandler(Long id);

    /**
     * @Author: 于丁
     * @Description: 根据code获取用户
     * @DateTime: 2020/7/30 3:39 下午
     * @Params:
     * @Return
     */
    Role getByCode(String code);

    /**
     * @Author: 于丁
     * @Description: 获取账户下面的所有角色
     * @DateTime: 2020/7/30 5:11 下午
     * @Params:
     * @Return
     */
    List<Role> getByAccountId(Long accountId);
}
